//
//  FFJMessageManager.h
//  Common
//
//  Created by ale tan on 2017/9/18.
//  Copyright © 2017年 IT.Bear. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "JMessage.h"
#import "CustomMessageModel.h"

#define JPUSHKEY @"6109c134a40140ab36bf8c5f"

#define UNBAND_ACOUNT @"unband_acount"
#define UNBAND_PASSWORD @"unband_password"

typedef void(^GetJMessageAcount)(BOOL success);

@interface FFJMessageManager : NSObject

@property (nonatomic ,copy) NSString * unBandAccount;
@property (nonatomic ,copy) NSString * unBandPassword;

+ (FFJMessageManager *)sharedInstance;

/**
 *  通过服务器申请账号
 *
 *  @param getJMessageAcount
 */
- (void)requestForJmessageAcount:(GetJMessageAcount )getJMessageAcount;

/**
 *  注册极光推送
 *
 *  @param launchOptions
 */
- (void)jMessageRegisterWithOptions:(NSDictionary *)launchOptions;

/**
 *  向服务器上报Device Token
 *
 *  @param deviceToken 设备Device Token
 */
- (void)registerDeviceToken:(NSData *)deviceToken;


/*!
 * @abstract 新用户注册
 *
 * @param username 用户名. 长度 4~128 位.
 *                 支持的字符: 字母,数字,下划线,英文减号,英文点,@邮件符号. 首字母只允许是字母或者数字.
 * @param password 用户密码. 长度 4~128 位.
 * @param handler 结果回调. 返回正常时 resultObject 为 nil.
 */
- (void)registerWithCompletionHandler:(JMSGCompletionHandler JMSG_NULLABLE)handler;


/*!
 * @abstract 用户登录
 *
 * @param username 登录用户名. 规则与注册接口相同.
 * @param password 登录密码. 规则与注册接口相同.
 * @param handler 结果回调
 *
 * - resultObject 简单封装的user对象
 * - error 错误信息
 *
 * 注意：上层不要直接使用 resultObject 对象做操作, 因为 resultOjbect 只是一个简单封装的user对象.
 */

- (void)loginWithCompletionHandler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

/*!
 * @abstract 当前用户退出登录
 *
 * @param handler 结果回调。正常返回时 resultObject 也是 nil。
 *
 * @discussion 这个接口一般总是返回成功，即使背后与服务器端通讯失败，SDK 也总是会退出登录的。
 * 建议 App 也不必确认 SDK 返回, 就实际退出登录状态.
 */
- (void)logout:(JMSGCompletionHandler JMSG_NULLABLE)handler;

/*!
 * @abstract 发送消息（已经创建好的）
 *
 * @param message 消息对象。
 *
 * @discussion 此接口与 createMessage:: 相关接口配合使用，创建好后使用此接口发送。
 */
- (void)sendMessage:(id)message Type:(CustomMessageType)type;

/*!
 *
 * @param message 未读消息数量。
 *
 */
- (NSInteger)getUnreadMessage;

/*!
 *
 * @param message 最后一条消息。
 *
 */
- (JMSGMessage *)lastMessage;

@end
